package com.developer.persistence.modulo.partidos;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.developer.core.utils.SimpleLogger;
import com.developer.logic.modulo.grupos.dto.Fase;
import com.developer.logic.modulo.grupos.dto.Grupo;
import com.developer.logic.modulo.partidos.dto.Partido;
import com.developer.mybatis.DBManager;
import com.developer.persistence.modulo.partidos.mapper.dao.PartidoDao;

public class PartidoControllerDB {
	
	private static PartidoControllerDB instance;
	
	public static PartidoControllerDB getInstance() {
		if (instance == null) {
			instance = new PartidoControllerDB();
		}
		
	
		return instance;
	}
	
	public List<Partido> getPartidosPorGrupo(Grupo grupo){
		SqlSession session = DBManager.openSession();

		try {

			PartidoDao PartidoMapper = session.getMapper(PartidoDao.class);
			List<Partido> list = PartidoMapper.getPartidosPorGrupo(grupo);

			return list;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getPartidosPorGrupo", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	}
	
	public boolean programarPartidoTransaccional(SqlSession session, Partido partido){
		try{
			PartidoDao PartidoDao = session.getMapper(PartidoDao.class);
			
			//Se crea el Partido
			PartidoDao.programarPartido(partido);
			
			return true;
		
		}catch (Exception e) {
			SimpleLogger.error("Error programarPartidoTransaccional", e);
			return false;
		}
		
		
	}

	public boolean crearPartidoTransaccional(SqlSession session, Partido partido) {
		try{
			PartidoDao PartidoDao = session.getMapper(PartidoDao.class);
			
			//Se crea el Partido
			PartidoDao.crearPartido(partido);
			
			return true;
		
		}catch (Exception e) {
			SimpleLogger.error("Error crearPartidoTransaccional", e);
			return false;
		}
	} 
	
	public Long getSiguienteIDPartidoTransaccional(SqlSession session){
		try {

			PartidoDao PartidoMapper = session.getMapper(PartidoDao.class);
			Long id = PartidoMapper.getSiguienteIDPartido();

			return id;
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getSiguienteIDPartidoTransaccional", e);
			
			return null;
			
		} 
		
	}
	
}
	